package com.example.pulseanalyse.veinType;

import java.util.List;

/**
 * @author: yyw
 * time: 2020/12/8 10:22
 * desc:替代关系类---满足条件则被替换
 */
public abstract class mutexCondition {

    public abstract String GetPulseType(List<String> _pluseTypeList);
}

/// <summary>
/// 浮脉
/// </summary>
class mutexFloating extends mutexCondition {
    @Override
    public String GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("洪") || _pluseTypeList.get(i).contains("濡") || _pluseTypeList.get(i).contains("虚")
                    || _pluseTypeList.get(i).contains("革") || _pluseTypeList.get(i).contains("芤")) {
                pluseType = "浮";
                break;
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 沉脉
/// </summary>
class mutexDeep extends mutexCondition {
    @Override
    public String GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("弱") || _pluseTypeList.get(i).contains("牢") || _pluseTypeList.get(i).contains("伏")) {
                pluseType = "沉";
                break;
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 迟
/// </summary>
class mutexSlow extends mutexCondition {
    @Override
    public String

    GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("结") || _pluseTypeList.get(i).contains("代")) {
                pluseType = "迟";
                break;
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 数
/// </summary>
class mutexRapid extends mutexCondition {
    public @Override
    String

    GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("芤") || _pluseTypeList.get(i).contains("动") || _pluseTypeList.get(i).contains("促")) {
                pluseType = "数";
                break;
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 滑
/// </summary>
class mutexSlippery extends mutexCondition {
    public @Override
    String

    GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("动")) {
                pluseType = "滑";
                break;
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 弦
/// </summary>
class mutexStringy extends mutexCondition {
    public @Override
    String

    GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";
        for (int i = 0; i < _pluseTypeList.size(); i++) {
            if (_pluseTypeList.get(i).contains("牢") || _pluseTypeList.get(i).contains("紧")) {
                pluseType = "弦";
                break;
            }
        }
        return pluseType;
    }
}


/// <summary>
/// 实 --- 2020.12.7修改为 实脉可以与其他脉型同时出现
/// </summary>
class mutexReplete extends mutexCondition {
    @Override
    public String GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";

        if (_pluseTypeList.size() > 2) {
            for (int i = 0; i < _pluseTypeList.size(); i++) {
                if (_pluseTypeList.get(i).contains("实")) {
                    pluseType = "实";
                    break;
                }
            }
        }
        return pluseType;
    }
}

/// <summary>
/// 平
/// </summary>
class mutexNormal extends mutexCondition {
    @Override
    public String GetPulseType(List<String> _pluseTypeList) {
        String pluseType = "";

        if (_pluseTypeList.size() > 2) {
            for (int i = 0; i < _pluseTypeList.size(); i++) {
                if (_pluseTypeList.get(i).contains("平")) {
                    pluseType = "平";
                    break;
                }
            }
        }
        return pluseType;
    }
}